package san.java.object_05;

/**
 *
 * 类基础语法
 *
 * 类的成员之一: 方法
 * 变量分为成员变量和局部变量
 *  在方法体外,类体内声明的变量称为成员变量
 *  在方法体内声明的变量称为局部变量
 *
 *  成员变量:
 *      1. 定义在类中, 在整个类中都可以访问
 *      2. 成员变量中:
 *          i 实例变量存在于对象所在的堆内存中
 *          ii 类变量: java1.8以前在方法区中, java1.8以后在堆中
 *      3. 成员变量有默认的初始化值
 *      4. 成员变量的权限修饰符可以根据需要,选择任意一个
 *
 *  局部变量
 *      1. 定义在局部,方法内, 代码块内
 *      2. 局部变量存在于栈内存中.
 *      3. 出作用域(相邻两个大括号)后,空间会被释放
 *      4. 局部变量没有默认初始化值,每次必须显示初始化
 *      5. 局部变量声明时不指定权限修饰符
 *
 *
 *  成员变量又分为:
 *      1. 实例变量: 指在实例化成对象之后才能使用
 *      2. 类变量: static变量,不需要实例化也可以使用
 *
 *  局部变量又分为:
 *      1. 形参: 方法签名中定义的
 *      2. 方法局部变量: 在方法内部的
 *      3. 代码块内的: 在代码块中定义的局部变量
 *
 *
 *  类的成员之二: 方法
 *  1. 方法(函数)是类和对象行为特征的抽象, 也称为函数
 *  2. java中的方法不能独立存在,所有的方法都必须定义在类中
 *
 *
 *  方法的调用:
 *      1. 方法只有在被调用的时候才会被执行
 *      2. 调用过程: ...
 *      3. 方法中只能调用方法,但是不能在方法中定义方法
 *      4. static方法只能访问static变量
 *
 *
 *  对象实例化:
 *      1. 当一个对象被创建时,会对其中各种类型的成员变量进行初始化赋值
 *      2. 匿名对象, 不定义对象句柄,而是直接调用对象的方法
 *          i  如果只需要使用对象的一个方法, 可以使用匿名对象
 *          ii 作为实参传递给一个方法调用
 *
 *
 */

public class syntax {
    // 属性, 成员变量
    // 类的成员变量可以先声明,不用初始化,类的成员变量是有默认值的
    String name;  // String的默认值是null
    int age;  // int 的默认值是0

    // 行为, 方法, 也叫函数

    /**
     * 打印姓名
     */
    public void showName() {
        System.out.println("姓名: " + name);
    }

    public int getAge() {  // 如果有返回值,一定要有返回值
        return age;
    }



    public static void main(String[] args) {

    }
}
